#include<stdio.h>
int a[]={0,1,2,5,8,7,6,3};
int b[9];
int c[9];
int count=0;
int main(int argc, char const *argv[])
{
    int i,j,k,t;
    void print();
    printf("Please enter original order of digits 1~8:");
    for(i=0;i<8;i++)
        scanf("%d",&b[a[i]]);
        printf("The sorting process is as felow : \n");
        print();
        for(t=-1,j=0;j<8&&t==-1;j++)
            if(b[a[j]]==1)
                t=j;
        for(j=0;j<8;j++)
            c[j]=a[(j+t)%8];
        for(i=2;i<9;i++)
            for(j=i-1;j<8;j++)
                if(b[c[j]]==i&&j!=i-1)
                {
                    b[4]=i;
                    b[c[j]]=0;
                    print();
                    for(k=j;k!=i-1;k--)
                    {
                        b[c[k]]=b[c[k-1]];
                        b[c[k-1]]=0;
                        print();
                    }
                    b[c[k]]=i;
                    b[4]=0;
                    print();
                    break;
                }
                else if(b[c[j]]==i)
                    break;
    return 0;
}
void print(int c)
{
    for(c=0;c<9;c++)
        if(c%3==2)
            printf("%2d",b[c]);
        else
            printf("%2d",b[c]);
        printf("------%2d------\n",count++);
}